#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "item.h"
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

#define RECT_WIDTH      30
#define RECT_HEIGHT     30

#define START_X         100
#define START_Y         100


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void InitItems();                   //随机初始化雷点位置
    void ReleaseItems();

    void NewGame();                     //新开一局游戏
    void GameFail();                    //点到雷,游戏失败
    bool FindAll();                     //是否找到所有雷

protected:
    void paintEvent(QPaintEvent *);
    void mousePressEvent(QMouseEvent *);

private slots:
    void OnMenuNewGame();
    void OnMenuLevel1();
    void OnMenuLevel2();
    void OnMenuLevel3();

private:
    void DrawChessboard();
    void DrawItems();
    void DrawItem(QPainter& painter,Item* pItem);

    void OpenEmptyItem(QPoint pt);			//点击空白元素(相邻雷数为0)时，递归查找相邻的空白元素，以及空白元素附近的数字元素(数字是雷数)
    bool PointInGameArea(QPoint pt);		//判断坐标是否超过游戏区域

private:
    Ui::MainWindow *ui;
    QPixmap mFlagImage;                 //小红旗图片
    QPixmap mBombImage;                 //雷图片

    int mRows;                          //行数
    int mColumes;                       //列数
    int mCountMine;                     //雷数
    QVector<QPoint> mMines;             //雷的坐标点
    QVector<QVector<Item*>> mItems;     //所有元素
    bool mIsGameFail;					//是否是游戏失败，失败了需要显示雷
};

#endif
